1
超越论文
AI008Lecture 2
00:07

从被动阅读学术论文到真正掌握工程实践之间的鸿沟,需要深入探究Transformer的数学核心。只有通过从理论理解转向实际实现,才能揭开高维潜在空间中固有的模糊性之谜。

1. 缩放的数学原理

现代大语言模型的核心机制是 缩放点积注意力(Scaled Dot-Product Attention)。一个常被理论忽视但至关重要的工程细节是 缩放规则(Scaling Rule)

  • 原始注意力得分必须除以键维度大小的平方根(dk
  • 原因在于: 这可以防止点积变得过大,否则会使Softmax函数进入梯度极小的区域, 无限小的梯度从而在反向传播过程中‘杀死’模型的学习能力。

2. 从理论到张量运算

工程理解的关键在于从概念性的循环转向 高度并行化的矩阵乘法

  • 序列注入: 与RNN不同,Transformer没有内在的顺序感。工程师必须手动编写正弦和余弦函数(位置编码(Positional Encodings)),以注入序列信息。
  • 稳定性机制: 实现过程需要战略性地使用 残差连接(Residual Connections)层归一化(LayerNorm) 来应对内部协变量偏移问题,确保训练过程保持稳定。
工程洞察力
真正的精通来自于逐行实现。仅依赖学术文献往往会导致对梯度稳定性和计算效率的误解。
Python 实现(PyTorch)
1
import torch
2
import torch.nn as nn
3
import math
4
5
def scaled_dot_product_attention(query, key, value):
6
# Calculate d_k (dimension of keys)
7
d_k = query.size(-1)
8
9
# Calculate raw attention scores
10
# Transitioning from naive loops to matrix multiplication
11
scores = torch.matmul(query, key.transpose(-2, -1))
12
13
# Apply the Scaling Rule to prevent infinitesimal gradients
14
scaled_scores = scores / math.sqrt(d_k)
15
16
# Apply Softmax to get attention weights
17
attention_weights = torch.softmax(scaled_scores, dim=-1)
18
19
# Output is the weighted sum of values
20
return torch.matmul(attention_weights, value)